package tp1
import tp1traits.carrera
import scala.collection.mutable.Map
import scala.collection.mutable.ArrayBuffer
import tp1traits.carrera.Estadisticas



class Curso(var termino: Boolean, var anio: Int, var cuatrimestre: Int, var cupo: Int, docentes:ArrayBuffer[Persona]) extends Estadisticas {
	
	var alumnos: Map[Persona,Nota] = Map()
	var notaAlumnoBusqueda = new Nota(0,false)
    
    def cerrarCurso(){
      this.termino = true
    }
    
	def sePuedeInscribir:Boolean={
	  alumnos.size <= cupo 
	}
    
    def agregarDocenteCurso(docente: Docente){
	  if(!(docentes contains docente)){ //es esto, o un set, pero no hay tipo Buffer.
	  docentes += docente
	  }
	}
	
	def inscribirAlumno(n_alumno:Alumno){
	  alumnos += n_alumno -> new Nota(0,false)
	}
	
	def colocarNota(s_alumno:Alumno, nota:Int){
	  if(alumnos contains s_alumno){
	  alumnos += s_alumno -> new Nota(nota,true)
	  }
	}
	
	def estaAlumno(persona:Persona):Boolean ={
	  alumnos contains persona
	}
	
	//Se asume que existe el alumno, y que solo hay 1 alumno por curso.
	def obtenerNotaAlumno(b_alumno:Alumno):Nota={
	  alumnos.get(b_alumno).get
	}
	
	def aprobo(b_alumno:Alumno):Boolean={
	  this.alumnos.get(b_alumno).get.nota > 4 && this.alumnos.get(b_alumno).get.termino
	}
	
	def abandono(b_alumno:Alumno):Boolean={
	  !this.alumnos.get(b_alumno).get.termino
	}
	
	def estaDocente(persona:Persona):Boolean ={
	   this.docentes contains persona
	}
	
	def esDeAnio(anio:Int):Boolean = this.anio == anio 
	
	def listaDeNotas():ArrayBuffer[Nota]={  
	  var listaNotas = new ArrayBuffer[Nota]
	  alumnos.keys.foreach{i => listaNotas += alumnos(i)}
	  listaNotas
	}

}